home *** CD-ROM | disk | FTP | other *** search
/ The 640 MEG Shareware Studio 2 / The 640 Meg Shareware Studio CD-ROM Volume II (Data Express)(1993).ISO / utility / gus_160.zip / GUS_WCFG.PAS next >
Pascal/Delphi Source File  |  1992-09-20  |  6KB  |  125 lines

  1. {$A+,B-,D-,E-,F-,I+,L-,N-,O-,R+,S+,V-}
  2. {$IFDEF VER60}
  3.   {$G-,X-}
  4. {$ENDIF}
  5. {$M 1024,0,0}
  6.  
  7. program GUS_WriteConfig;    { Append or update configuration }
  8.                             { information to or in GUS.EXE    for v1.60 !!!  }
  9. uses DOS;
  10.  
  11. type
  12.     FNameStr = string[12];
  13.  
  14.     ArcType = (ARC,ARp,ARJ,DWC,HPK,HYP,LZH,PAK,SQZ,ZIP,ZOO);
  15.     ArcCmds = (Extract,Replace,Display,Test);
  16.  
  17.     ArcData = record
  18.                Ext : string[3];
  19.                Prog: FNameStr;
  20.                Cmd : array [ArcCmds] of string[10];
  21.                Pth,
  22.                Pwd : string[5];
  23.               end;
  24.  
  25.     ArcCfg  = record
  26.                 Marker  : longint;
  27.                 ArcTable: array [ArcType] of ArcData;
  28.               end;
  29.  
  30. const
  31.     GUSname     = 'GUS.EXE';
  32.     CfgMarker   = $A0535547;       {'GUS'+chr(160)}
  33.     Unsupported = '**********';
  34.     ArcInfo     : ArcCfg
  35.     = (Marker   : CfgMarker;
  36.        ArcTable :                         {     Extract       Replace       Display       Test        }
  37.        ((Ext: 'ARC'; Prog: 'PKUNPAK .EXE'; Cmd:('-n        ', '-r        ', '-c        ', '-t        '); Pth: Unsupported;
  38.                                                                                                        Pwd: 'g    '     ),
  39.         (Ext: 'A7+'; Prog: 'XARC    .EXE'; Cmd:('          ', '/o        ', Unsupported , Unsupported ); Pth: Unsupported;
  40.                                                                                                        Pwd: '/g   '     ),
  41.         (Ext: 'ARJ'; Prog: 'ARJ     .EXE'; Cmd:('e -uy     ', 'e -y      ', 'p         ', 't         '); Pth: '<x   '    ;
  42.                                                                                                        Pwd: ' -g  '     ),
  43.         (Ext: 'DWC'; Prog: 'DWC     .EXE'; Cmd:('xow       ', 'xw        ', 'p         ', 't         '); Pth: 'r    '    ;
  44.                                                                                                        Pwd: 'g    '     ),
  45.         (Ext: 'HPK'; Prog: 'HPACK   .EXE'; Cmd:('x -on -r  ', 'x -oa -r  ', 'p -r      ', 't -r      '); Pth: ' -p  '    ;
  46.                                                                                                        Pwd: ' -c  '     ),
  47.         (Ext: 'HYP'; Prog: 'HYPER   .EXE'; Cmd:('-x        ', '-xo       ', Unsupported , Unsupported ); Pth: 'p    '    ;
  48.                                                                                                        Pwd: Unsupported ),
  49.         (Ext: 'LZH'; Prog: 'LHA     .EXE'; Cmd:('e /m+     ', 'e /m+c+   ', 'p /m+     ', 't /m+     '); Pth: 'x+   '    ;
  50.                                                                                                        Pwd: Unsupported ),
  51.         (Ext: 'PAK'; Prog: 'PAK     .EXE'; Cmd:('e/WO      ', 'e/WA      ', 'p         ', 't         '); Pth: '/PATH'    ;
  52.                                                                                                        Pwd: '/g=  '     ),
  53.         (Ext: 'SQZ'; Prog: 'SQZ     .EXE'; Cmd:('e /o0     ', 'e /o1     ', 'p         ', 't         '); Pth: '<x   '    ;
  54.                                                                                                        Pwd: Unsupported ),
  55.         (Ext: 'ZIP'; Prog: 'PKUNZIP .EXE'; Cmd:('-n        ', '-o        ', '-c        ', '-t        '); Pth: ' -d  '    ;
  56.                                                                                                        Pwd: ' -s  '     ),
  57.         (Ext: 'ZOO'; Prog: 'ZOO     .EXE'; Cmd:('e:O       ', 'e:OS      ', 'e:p       ', 'e:N       '); Pth: '//   '    ;
  58.                                                                                                        Pwd: Unsupported )
  59.        )
  60.       );  {NOTE: if the first character of an option string is a '<', then it means that the following letter
  61.            should REPLACE the first letter of the command string and not be added to it like the other options.}
  62. var
  63.     CfgData : ArcCfg;
  64.     GUSfile : file;
  65.  
  66.  
  67. procedure ReadData (var F   : file;
  68.                     var Data: ArcCfg);
  69.  begin
  70.   {$I-}
  71.   reset(F,1);
  72.   {$I+}
  73.   if IOresult<>0
  74.    then begin
  75.          writeln('Can''t open ',GUSname);
  76.          Halt(1);
  77.         end;
  78.   {$I-} seek(F,filesize(F)-sizeof(ArcCfg)); {$I+}
  79.   if IOresult<>0
  80.    then begin
  81.          writeln('Problem: cannot seek to byte location ',filesize(F),' - ',sizeof(ArcCfg));
  82.          Halt(1);
  83.         end;
  84.   {$I-} BlockRead(F,Data,sizeof(ArcCfg)); {$I+}
  85.   if IOresult<>0
  86.    then begin
  87.          writeln('Problem: cannot read ',sizeof(ArcCfg),' bytes in ',GUSname,' at offset ',filepos(F));
  88.          Halt(1);
  89.         end;
  90.   close(F);
  91.   writeln('Reading configuration information from ',GUSname)
  92.  end; {ReadData}
  93.  
  94.  
  95. procedure AppendData (var F   : file;
  96.                       var Data: ArcCfg);
  97.  begin
  98.   Data.Marker:=CfgMarker;
  99.   reset(F,1);
  100.   seek(F,filesize(F));
  101.   BlockWrite(F,Data,sizeof(ArcCfg));
  102.   close(F);
  103.   writeln('Appending configuration information to ',GUSname)
  104.  end; {AppendData}
  105.  
  106.  
  107. procedure UpdateData (var F   : file;
  108.                       var Data: ArcCfg);
  109.  begin
  110.   Data.Marker:=CfgMarker;
  111.   reset(F,1);
  112.   seek(F,filesize(F)-sizeof(ArcCfg));
  113.   BlockWrite(F,Data,sizeof(ArcCfg));
  114.   close(F);
  115.   writeln('Updating configuration information in ',GUSname)
  116.  end; {UpdateData}
  117.  
  118. begin {=MAIN=}
  119.  assign(GUSfile,GUSname);
  120.  ReadData(GUSfile,CfgData);
  121.  if CfgData.Marker=CfgMarker
  122.   then UpdateData(GUSfile,ArcInfo)
  123.   else AppendData(GUSfile,ArcInfo)
  124. end.
  125.